This commit is an implementation of [RFC 1200][rfc] which brings two new
subcommands: `cargo install` and `cargo uninstall`. Most of this is a straight
implementation of the RFC, but a few tweaks were made:
* The `-p` or `--package` arguments are no longer needed as you just pass
`crate` as a bare argument to the command, this means `cargo install foo`
works and downloads from crates.io by default.
* Some logic around selecting which crate in a multi-crate repo is installed has
been tweaked slightly, but mostly in the realm of "let's do the thing that
makes sense" rather than the literal "let's do what's in the RFC".
Specifically, we don't pick a crate with examples if there are multiple crates
with binaries (instead an error is generated saying there are multiple binary
crates).
[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1200-cargo-install.md